package main

import (
	"github.com/signintech/gopdf"
)

func main() {
	// Initialize PDF
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) // A4 page size
	pdf.AddPage()

	// Set Font
	err := pdf.AddTTFFont("simsun", "./ttf/simsun.ttf")
	if err != nil {
		panic(err)
	}

	if err != nil {
		panic(err)
	}

	// Header

	pdf.Line(45, 30, 550, 30)
	pdf.SetY(32)
	pdf.SetX(188)
	err = pdf.SetFont("simsun", "", 24)
	pdf.Cell(nil, "市六中食堂采购清单")
	pdf.Line(45, 58, 550, 58)

	err = pdf.SetFont("simsun", "", 14)

	pdf.SetY(60)
	pdf.SetX(50)
	pdf.Cell(nil, "2024年9月9日")
	pdf.SetY(60)
	pdf.SetX(285)
	pdf.Cell(nil, "星期:一")
	pdf.SetY(60)
	pdf.SetX(460)
	pdf.Cell(nil, "楼层: 2")
	pdf.Line(45, 76, 550, 76)
	err = pdf.SetFont("simsun", "", 13)
	// Column Titles
	columns := []string{"蔬菜类", "数量", "鱼、禽、蛋、肉类", "数量", "干货类", "数量", "冷冻类", "数量"} // , "干货类", "数量", "冷冻类", "数量"
	xPositions := []float64{60, 118, 158, 272, 320, 380, 440, 517}               // , 380, 440, 490, 500

	pdf.SetY(84)
	var itemYPosition []float64

	for i, _ := range "............................" {
		if i <= 7 {
			pdf.SetX(xPositions[i])
			pdf.Cell(nil, columns[i])
		}
		y := float64(76 + i*26)
		pdf.Line(45, y, 550, y)
		if i > 1 {
			itemYPosition = append(itemYPosition, y)
		}
	}
	err = pdf.SetFont("simsun", "", 12)
	// 横向方向的线
	pdf.Line(45, 30, 45, 778)   // 左1
	pdf.Line(110, 76, 110, 778) // 左2
	pdf.Line(150, 76, 150, 778) // 左3
	pdf.Line(265, 76, 265, 778) // 左4
	pdf.Line(302, 76, 302, 778) // 左5
	pdf.Line(370, 76, 370, 778) // 左6
	pdf.Line(415, 76, 415, 778) // 左7
	pdf.Line(510, 76, 510, 778) // 左7
	// 横向方向的线
	pdf.Line(550, 30, 550, 778) // 右侧

	// 末尾横线
	pdf.Line(45, 778, 550, 778)
	// Data Rows
	rows := [][]string{
		{"青椒", "65斤", "泥蛙1", "55斤", "腐竹", "5斤", "", ""},
		{"卤皮子", "25斤", "肉(包早餐)", "60斤"},
		{"长豆角", "50斤", "蛋", "1件"},
		{"土豆", "40斤"},
		{"小红椒", "8斤"},
		{"西红柿", "30斤"},
		{"仔南瓜", "30斤"},
		{"生姜", "1斤"}, {"蒜子", "1斤"}, {"香葱", "1斤"},
		{},
		{},
	}

	for index, row := range rows {
		pdf.SetY(itemYPosition[index] - 16)
		for i, cell := range row {
			pdf.SetX(xPositions[i])
			pdf.Cell(nil, cell)
		}
	}
	err = pdf.SetFont("simsun", "", 16)
	pdf.SetX(110)
	pdf.SetY(496)
	pdf.Cell(nil, "中餐：青红椒炒泥蛙、卤皮子炒肉、长豆角炒肉、土豆丝;")
	pdf.SetX(110)
	pdf.SetY(522)
	pdf.Cell(nil, "晚餐：腐竹红椒炒肉、西红柿炒蛋、小炒肉、仔南瓜")

	pdf.Line(45, 778, 550, 778)
	pdf.SetX(486)
	pdf.SetY(788)
	err = pdf.SetFont("simsun", "", 12)
	pdf.Cell(nil, "[贺师傅专用]")
	// Save PDF
	pdf.WritePdf("市六中食堂采购清单20250101	.pdf")
}
